package com.micro.ai.template.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.micro.ai.commons.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;
import java.util.Map;

/**
 * 参数实体
 * 
 * @author micro-ai
 * @since 0.0.1
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("parameter")
public class Parameter extends BaseEntity {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
     * 模板版本ID
     */
    private Long templateVersionId;

    /**
     * 参数名称
     */
    private String name;

    /**
     * 参数显示名称
     */
    private String displayName;

    /**
     * 参数描述
     */
    private String description;

    /**
     * 参数类型：string, number, boolean, array, object
     */
    private String type;

    /**
     * 参数组
     */
    private String group;

    /**
     * 参数排序
     */
    private Integer sortOrder;

    /**
     * 是否必填
     */
    private Boolean required;

    /**
     * 默认值
     */
    private String defaultValue;

    /**
     * 参数约束，JSON格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private Object constraints;

    /**
     * 枚举值，JSON数组格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private List<String> enumValues;

    /**
     * 数值范围，JSON格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private Map<String, Object> range;

    /**
     * 正则表达式
     */
    private String pattern;

    /**
     * 参数验证规则，JSON格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private Object validation;

    /**
     * 参数示例
     */
    private String example;

    /**
     * 参数提示
     */
    private String hint;

    /**
     * 参数配置，JSON格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private Object config;

    /**
     * 参数元数据，JSON格式
     */
    @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    private Object metadata;
}
